home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games Extra 1996 September / Amiga Games Extra CD-ROM 9-1996.iso / userbox / publicdomain / prlink-0.9.5b / loader.bas < prev    next >
BASIC Source File  |  1996-07-06  |  2KB  |  77 lines

  1. At the end of this document, there is a bootstrap program for the PET and
  2. the 4/8 bit version of the prlink cable.
  3.  
  4. Versions for VIC, 64 and 128 can easily be made by changing lines 100-130.
  5. Also remove line 200 for 64 and 128.
  6.  
  7. VIC-20:
  8.  99 hs=20:rem system type
  9.  100 av=32:ack=37148: rem ack (out) is cb2
  10.  110 dat=37136: rem port b
  11.  120 ddr=37138
  12.  130 sv=16:srobe=37149: rem strobe (in) is cb1
  13.  
  14. C64 and C128:
  15.  99 hs=64:rem or 128
  16.  100 av=4:ack=56576: rem ack (out) is pa2 
  17.  110 dat=56577: rem port b
  18.  120 ddr=56579
  19.  130 sv=16:srobe=56589: rem strobe (in) is -flag
  20.  200
  21.  
  22. To really do the load function, change the print in line 2050 to poke.
  23. Here is the main listing:
  24.  99 hs=201:rem system type
  25.  100 av=32:ack=59468: rem ack (out) is cb2
  26.  110 dat=59471: rem port a
  27.  120 ddr=59459
  28.  130 sv=2:srobe=59469: rem strobe (in) is ca1
  29.  199 rem *** init cb2 and ca1
  30.  200 poke ack, (peek(ack) and 254) or (128+64+32)
  31.  300 poke ddr,0:gosub 1000
  32.  310 printby
  33.  320 if by then 330
  34.  322 by=hs:gosub 1200
  35.  324 by=0:gosub 1200:gosub 1200:gosub 1200:gosub 1200
  36.  326 goto 300
  37.  330 if by=1 then gosub2000:goto300
  38.  340 print"(unknown function)":goto 300
  39.  999 rem *** receive a byte
  40.  1000 if (peek(sr) and sv) = 0 then 1000
  41.  1010 poke sr,sv
  42.  1020 by = peek(dat)
  43.  1030 i= peek(ack): i = (i or av) - (i and av) : poke ack,i
  44.  1040 return
  45.  1199 rem *** send a byte
  46.  1200 if (peek(sr) and sv) = 0 then 1200
  47.  1210 poke sr,sv
  48.  1220 poke ddr,15:poke dat,by
  49.  1230 i= peek(ack): i = (i or av) - (i and av) : poke ack,i
  50.  1240 if (peek(sr) and sv) = 0 then 1240
  51.  1250 poke sr,sv
  52.  1260 poke dat,by/16
  53.  1270 i= peek(ack): i = (i or av) - (i and av) : poke ack,i
  54.  1280 return
  55.  1300 poke ddr,0: return: rem *** back to inputs
  56.  1999 rem *** load
  57.  2000 gosub1000:print"bank"by
  58.  2010 by=0:gosub1200
  59.  2020 gosub1000:f=by:gosub1000:f=f+256*by:print"from"f
  60.  2030 gosub1000:t=by:gosub1000:t=t+256*by:print"to  "t
  61.  2040 for a=f to t-1
  62.  2050 gosub1000:printa,by
  63.  2060 next
  64.  2070 return
  65.  
  66. If you want to use the PC64 cable instead, make these changes:
  67.  300 poke ddr,15:gosub1000
  68.  1030 poke ack,peek(ack) and (255-av)
  69.  1040 if (peek(sr) and sv) = 0 then 1000
  70.  1050 poke sr,sv
  71.  1060 by = peek(dat) and 240 or (by/16)
  72.  1070 poke ack,peek(ack) or av
  73.  1080 return
  74.  1230 poke ack,peek(ack) and (255-av)
  75.  1270 poke ack,peek(ack) or av
  76.  1300 return
  77.